package com.ellwood.IPGuard.business.system.repository;

import com.ellwood.IPGuard.common.core.basic.AdapterRepository;
import com.ellwood.IPGuard.common.core.result.EllPageResult;
import com.ellwood.IPGuard.infrastruction.domain.entity.system.UmsSysUserEntity;
import com.ellwood.IPGuard.infrastruction.domain.query.UmsSysUserQuery;
import com.ellwood.IPGuard.infrastruction.domain.vo.system.user.UmsSysUserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @ProjectName: IPGuard-boot
 * @PackageName: com.ellwood.IPGuard.business.system.repository
 * @ClassName: UmsSysUserRepositoryAdapter
 * @Description: // 系统用户管理服务仓库适配器接口
 * @Author: Ellwood
 * @CreateDate: 2024/9/26 - 上午11:13
 * @Version: V1.0.0
 */
public interface UmsSysUserRepositoryAdapter extends AdapterRepository<UmsSysUserEntity> {
        
        /**
         * 分页查询用户
         *
         * @param userQuery 分页查询参数
         * @return 返回数据
         */
        EllPageResult<UmsSysUserVO> userPage(UmsSysUserQuery userQuery);
        
        /**
         * 查询所有用户
         *
         * @return 返回数据
         */
        List<UmsSysUserVO> findAll(UmsSysUserQuery userQuery);
        
        /**
         * 根据id查询用户
         *
         * @param id 用户id
         * @return 返回数据
         */
        UmsSysUserVO getUserById(Long id);
        
        /**
         * 新增用户
         *
         * @param userVO 新增用户参数
         */
        int saveUser(UmsSysUserVO userVO);
        
        /**
         * 编辑用户
         *
         * @param userVO 编辑用户参数
         */
        int userUpdate(UmsSysUserVO userVO);
        
        /**
         * 删除用户
         *
         * @param idList 用户id列表
         */
        int userRemove(List<Long> idList);
        
        /**
         * 逻辑删除用户
         *
         * @param userId 用户id
         */
        int userLogicRemove(Long userId);

        /**
         * 导出用户
         * @param file Excel文件
         * @param  password  密码
         * @return 上传成功
         */
        void userImportExcel(MultipartFile file, String password);
        
        /**
         * 导入用户
         */
        void userExport();
}
